// C++标准头文件
#include <iostream>
#include <fstream>

#include "G4UserEventAction.hh"
#include "globals.hh"
#include "G4EventManager.hh"

class G4ImproveRunAction;

class G4ImproveEventAction : public G4UserEventAction{

public:

    // 构造函数，参数为G4ImproveRunAction
    G4ImproveEventAction(G4ImproveRunAction* runAction);

    // 析构函数
    ~G4ImproveEventAction();

    void BeginOfEventAction(const G4Event* event) override;     // 在每个event开始前执行该函数
    void EndOfEventAction(const G4Event* event) override;       // 在每个event结束后执行该函数

    void AddEdep(G4double edep);        // 用于接收每个step中能量沉积的能量累加函数

private:
    G4ImproveRunAction* fRunAction = nullptr;     // 向run传递能量的变量
    G4double            fEdep = 0.0;              // 储存每个event中沉积能量的变量
    G4int               eventID;                  // 当前event的ID
    std::ofstream       outFile;                  // 定义输出文件流
  
};